草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 为什么偏爱数据结构对齐?

结构的每个成员的类型通常有一个默认的对齐方式,即每个结构成员都在预先确定的边界上对齐。出于这个原因,填充在以下wiki示例中执行:structMixedData{charData1;shortData2;intData3;charData4;};structMixedData/*Aftercompilationin32-bitx86machine*/{charData1;/*1byte*//*1byteforthefollowing'short'tobealignedona2byteboundaryassumingthattheaddresswherestructurebeginsis

c++ - 禁止使用 __sprintf_chk()

我观察到c++程序使用sprintf,其中此sprintf隐式调用__sprintf_chk()。此__sprintf_chk()似乎通过检查堆栈帧来检查缓冲区溢出。为了我的研究目的,我想知道是否可以使用__sprintf_chk()来禁用它? 最佳答案 尝试将程序中对sprintf的所有调用替换为:sprintf(params...);进入(sprintf)(params...);这将禁用任何基于预处理器的sprintf更改(*仅当sprintf被使用类似函数的宏更改时,如__sprintf_chk的情况)。对于gcc,有选项-f

c++ - 从 C 使用 C++ 损坏的函数

我有一个.lib文件,我没有它的源代码。我需要它的导出函数,但我是用C编写的,并且该函数是C++名称损坏的。我不会写extern"C",因为我没有源代码。如何在没有源代码和切换到C++的情况下链接损坏的函数? 最佳答案 制作C++包装器:包装器.cpp:#include"3rdparty.hpp"extern"C"intfoo(inta,intb){returnthird_party::secret_function(a,b);}consumer.c:externintfoo(int,int);//...构建:(例如使用GCC)g+

c++ - 创建一个 Fast Sin() 函数来提高 fps ?快速 sin() 函数?

我正在实时渲染500x500点。我必须使用atan()和sin()函数计算点的位置。通过使用atan()和sin(),我得到了24fps(每秒帧数)。floatthetaC=atan(value);floath=(value)/(sin(thetaC)));如果我不使用sin(),我将获得52fps。如果我不使用atan(),我将30fps。所以,最大的问题是sin()。我怎样才能使用FastSin版本。我可以为此创建一个查找表吗?我没有任何特定值来创建LUT。在这种情况下我能做什么?PS:我也尝试过ASM的fastsin函数,但没有得到任何区别。谢谢。 最

c++ - 使用 C/C++ 进行字符串格式化

最近我在面试中被要求将字符串“aabbbccccdddddd”转换为“a2b3c4d5”。目标是用单次出现和重复计数替换每个重复的字符。这里'a'在输入中重复了两次,因此我们必须在输出中将其写为'a2'。我还需要编写一个函数来将格式反转回原始格式(例如从字符串“a2b3c4d5”到“aabbbccccddddd”)。我可以自由使用C或C++。我写了下面的代码,但是面试官似乎对此不太满意。他让我尝试一种比这更聪明的方法。在下面的代码中,我使用formatstring()通过添加重复计数来消除重复的字符,并使用reverseformatstring()转换回原始字符串。voidformat

c++ - 查找两个字符串中的共同字符

我正在编写的问题是我们必须计算两个字符串中常见字符的数量。计数的主要部分是这样的for(i=0;i这符合O(n^2)逻辑。但是我想不出比这更好的解决方案。谁能帮我用O(n)逻辑编码。 最佳答案 这很简单。取两个int数组freq1和freq2。将其所有元素初始化为0。然后读取您的字符串并将字符的频率存储到这些数组中。之后比较数组freq1和freq2以找到共同的字符。 关于c++-查找两个字符串中的共同字符,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么用 new 创建的 C++ 数组与 C 样式数组的行为不同?

我正在自学C++,因此一直在编写一些示例代码来真正巩固我对指针和数组的理解。我是这样写的:intmyints[]={20,40,60,80,100};//Cstylearray?shouldbestoredonstack?ismyint'stypepointertointoranarrayofint?howdoesitdifferfrommyotherints?int*myotherints=newint[5]{20,40,60,80,100};//newalwaysreturnspointer,isthisaC++stylearray?//doesthispointergetcrea

c++ - 为什么我不能使用 == true 检查变量是否有值?

if(10)是真的,但是if(10==true)是假的。有人能告诉我为什么第一种情况将数字转换为bool而第二种情况没有吗? 最佳答案 if(10)等同于if(10!=0),而if(10==true)是if(10==1)(因为true被提升为int类型的值1)。通俗地说:碰巧满足某些属性的两件事不会自动成为同一件事。(例如,donut和飞盘都是圆形的,但这并不意味着donut等于飞盘。整数和bool值都可以在bool上下文中进行评估,但这并不意味着每个整数都被评估为true等于每个truebool值。)

c++ - "factor out"公共(public)字段有什么办法可以节省空间?

我有一个大数组(>数百万)Item,其中每个Item都具有以下形式:structItem{void*a;size_tb;};有一些不同的a字段——这意味着有许多项具有相同的a字段。我想“分解”这些信息以节省大约50%的内存使用量。但是,问题在于这些Item具有重要的顺序,并且可能会随着时间的推移而改变。因此,我不能继续为每个不同的a创建一个单独的Item[],因为那样会丢失项目之间的相对顺序。另一方面,如果我存储size_tindex;字段中所有项目的顺序,那么我将失去因删除void*a;字段。那么有没有办法让我在这里真正节省内存,或者没有?(注意:我已经可以想到例如使用unsigne

c++ - 使用自动工具从 C++ 使用 C 代码

我正在用一些用C编写的代码编写(我的第一个)C++类,但我只能通过在externblock中声明C函数来编译C++。我的项目使用自动工具;有什么方法可以自动执行此过程,这样我就不必维护两个头文件了吗? 最佳答案 在C代码头文件中的#ifdef中使用externblock头文件开始#ifdef__cplusplusextern"C"{#endif...在头文件的末尾#ifdef__cplusplus}#endif这样它就可以同时包含在C和C++源代码中 关于c++-使用自动工具从C++使用